From 85c4c42bd601270d7be0f34a0767a34bb85e29bb Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Tue, 12 Dec 2023 18:50:03 +0100 Subject: refactor(hooks): rewrite useBreadcrumbs hook * use next/router to get the slug instead of using props * handle cases where the current page title is not provided * update JSON-LD schema to match the example in documentation * add tests --- src/pages/projets/[slug].tsx | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'src/pages/projets/[slug].tsx') diff --git a/src/pages/projets/[slug].tsx b/src/pages/projets/[slug].tsx index 0c750f9..8985f47 100644 --- a/src/pages/projets/[slug].tsx +++ b/src/pages/projets/[slug].tsx @@ -49,7 +49,7 @@ import { loadTranslation, } from '../../utils/helpers/server'; import { - useBreadcrumb, + useBreadcrumbs, useGithubRepoMeta, useHeadingsTree, } from '../../utils/hooks'; @@ -183,10 +183,8 @@ type ProjectPageProps = { const ProjectPage: NextPageWithLayout = ({ data }) => { const { id, intro, meta, slug, title } = data.project; const intl = useIntl(); - const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumb({ - title, - url: slug, - }); + const { items: breadcrumbItems, schema: breadcrumbSchema } = + useBreadcrumbs(title); const { ref, tree } = useHeadingsTree({ fromLevel: 2 }); const page = { @@ -211,7 +209,11 @@ const ProjectPage: NextPageWithLayout = ({ data }) => { slug, title, }); - const schemaJsonLd = getSchemaJson([webpageSchema, articleSchema]); + const schemaJsonLd = getSchemaJson([ + webpageSchema, + articleSchema, + breadcrumbSchema, + ]); const messages = { repos: { @@ -262,12 +264,6 @@ const ProjectPage: NextPageWithLayout = ({ data }) => { // eslint-disable-next-line react/no-danger -- Necessary for schema dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaJsonLd) }} /> -